package com.onedec.entity;

import java.util.ArrayList;
import java.util.List;

public class OnedecFloorPlanExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public OnedecFloorPlanExample() {
        oredCriteria = new ArrayList<>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andFloorPlanIdIsNull() {
            addCriterion("floor_plan_id is null");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdIsNotNull() {
            addCriterion("floor_plan_id is not null");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdEqualTo(Integer value) {
            addCriterion("floor_plan_id =", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdNotEqualTo(Integer value) {
            addCriterion("floor_plan_id <>", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdGreaterThan(Integer value) {
            addCriterion("floor_plan_id >", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("floor_plan_id >=", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdLessThan(Integer value) {
            addCriterion("floor_plan_id <", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdLessThanOrEqualTo(Integer value) {
            addCriterion("floor_plan_id <=", value, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdIn(List<Integer> values) {
            addCriterion("floor_plan_id in", values, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdNotIn(List<Integer> values) {
            addCriterion("floor_plan_id not in", values, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdBetween(Integer value1, Integer value2) {
            addCriterion("floor_plan_id between", value1, value2, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIdNotBetween(Integer value1, Integer value2) {
            addCriterion("floor_plan_id not between", value1, value2, "floorPlanId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdIsNull() {
            addCriterion("floor_project_id is null");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdIsNotNull() {
            addCriterion("floor_project_id is not null");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdEqualTo(Integer value) {
            addCriterion("floor_project_id =", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdNotEqualTo(Integer value) {
            addCriterion("floor_project_id <>", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdGreaterThan(Integer value) {
            addCriterion("floor_project_id >", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("floor_project_id >=", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdLessThan(Integer value) {
            addCriterion("floor_project_id <", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdLessThanOrEqualTo(Integer value) {
            addCriterion("floor_project_id <=", value, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdIn(List<Integer> values) {
            addCriterion("floor_project_id in", values, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdNotIn(List<Integer> values) {
            addCriterion("floor_project_id not in", values, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdBetween(Integer value1, Integer value2) {
            addCriterion("floor_project_id between", value1, value2, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorProjectIdNotBetween(Integer value1, Integer value2) {
            addCriterion("floor_project_id not between", value1, value2, "floorProjectId");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIsNull() {
            addCriterion("floor_plan is null");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIsNotNull() {
            addCriterion("floor_plan is not null");
            return (Criteria) this;
        }

        public Criteria andFloorPlanEqualTo(String value) {
            addCriterion("floor_plan =", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanNotEqualTo(String value) {
            addCriterion("floor_plan <>", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanGreaterThan(String value) {
            addCriterion("floor_plan >", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanGreaterThanOrEqualTo(String value) {
            addCriterion("floor_plan >=", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanLessThan(String value) {
            addCriterion("floor_plan <", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanLessThanOrEqualTo(String value) {
            addCriterion("floor_plan <=", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanLike(String value) {
            addCriterion("floor_plan like", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanNotLike(String value) {
            addCriterion("floor_plan not like", value, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanIn(List<String> values) {
            addCriterion("floor_plan in", values, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanNotIn(List<String> values) {
            addCriterion("floor_plan not in", values, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanBetween(String value1, String value2) {
            addCriterion("floor_plan between", value1, value2, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlanNotBetween(String value1, String value2) {
            addCriterion("floor_plan not between", value1, value2, "floorPlan");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1IsNull() {
            addCriterion("floor_plan1 is null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1IsNotNull() {
            addCriterion("floor_plan1 is not null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1EqualTo(String value) {
            addCriterion("floor_plan1 =", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1NotEqualTo(String value) {
            addCriterion("floor_plan1 <>", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1GreaterThan(String value) {
            addCriterion("floor_plan1 >", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1GreaterThanOrEqualTo(String value) {
            addCriterion("floor_plan1 >=", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1LessThan(String value) {
            addCriterion("floor_plan1 <", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1LessThanOrEqualTo(String value) {
            addCriterion("floor_plan1 <=", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1Like(String value) {
            addCriterion("floor_plan1 like", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1NotLike(String value) {
            addCriterion("floor_plan1 not like", value, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1In(List<String> values) {
            addCriterion("floor_plan1 in", values, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1NotIn(List<String> values) {
            addCriterion("floor_plan1 not in", values, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1Between(String value1, String value2) {
            addCriterion("floor_plan1 between", value1, value2, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan1NotBetween(String value1, String value2) {
            addCriterion("floor_plan1 not between", value1, value2, "floorPlan1");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2IsNull() {
            addCriterion("floor_plan2 is null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2IsNotNull() {
            addCriterion("floor_plan2 is not null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2EqualTo(String value) {
            addCriterion("floor_plan2 =", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2NotEqualTo(String value) {
            addCriterion("floor_plan2 <>", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2GreaterThan(String value) {
            addCriterion("floor_plan2 >", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2GreaterThanOrEqualTo(String value) {
            addCriterion("floor_plan2 >=", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2LessThan(String value) {
            addCriterion("floor_plan2 <", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2LessThanOrEqualTo(String value) {
            addCriterion("floor_plan2 <=", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2Like(String value) {
            addCriterion("floor_plan2 like", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2NotLike(String value) {
            addCriterion("floor_plan2 not like", value, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2In(List<String> values) {
            addCriterion("floor_plan2 in", values, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2NotIn(List<String> values) {
            addCriterion("floor_plan2 not in", values, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2Between(String value1, String value2) {
            addCriterion("floor_plan2 between", value1, value2, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan2NotBetween(String value1, String value2) {
            addCriterion("floor_plan2 not between", value1, value2, "floorPlan2");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3IsNull() {
            addCriterion("floor_plan3 is null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3IsNotNull() {
            addCriterion("floor_plan3 is not null");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3EqualTo(String value) {
            addCriterion("floor_plan3 =", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3NotEqualTo(String value) {
            addCriterion("floor_plan3 <>", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3GreaterThan(String value) {
            addCriterion("floor_plan3 >", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3GreaterThanOrEqualTo(String value) {
            addCriterion("floor_plan3 >=", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3LessThan(String value) {
            addCriterion("floor_plan3 <", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3LessThanOrEqualTo(String value) {
            addCriterion("floor_plan3 <=", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3Like(String value) {
            addCriterion("floor_plan3 like", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3NotLike(String value) {
            addCriterion("floor_plan3 not like", value, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3In(List<String> values) {
            addCriterion("floor_plan3 in", values, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3NotIn(List<String> values) {
            addCriterion("floor_plan3 not in", values, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3Between(String value1, String value2) {
            addCriterion("floor_plan3 between", value1, value2, "floorPlan3");
            return (Criteria) this;
        }

        public Criteria andFloorPlan3NotBetween(String value1, String value2) {
            addCriterion("floor_plan3 not between", value1, value2, "floorPlan3");
            return (Criteria) this;
        }
    }

    /**
     */
    public static class Criteria extends GeneratedCriteria {
        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}